Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

@uppy/audio: refactor to TypeScript #4860

Merged
merged 18 commits into from
Jan 22, 2024
Merged

@uppy/audio: refactor to TypeScript #4860

merged 18 commits into from
Jan 22, 2024

Conversation

aduh95
Copy link
Contributor

@aduh95 aduh95 commented Jan 8, 2024

No description provided.

@aduh95 aduh95 marked this pull request as ready for review January 16, 2024 17:32
@aduh95 aduh95 added the safe to test Add this label on trustworthy PRs to spawn the e2e test suite label Jan 16, 2024
@github-actions github-actions bot removed the safe to test Add this label on trustworthy PRs to spawn the e2e test suite label Jan 16, 2024
Copy link
Member

@Murderlon Murderlon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👌

Can we disable the Forbidden non-null assertion eslint rule? We clearly want to use it every now and then and I think we already know to be cautious about it.

@aduh95 aduh95 changed the base branch from 4.x to main January 17, 2024 13:00
Copy link
Contributor

github-actions bot commented Jan 17, 2024

Diff output files
diff --git a/packages/@uppy/audio/lib/Audio.js b/packages/@uppy/audio/lib/Audio.js
index 10d9479..3265e02 100644
--- a/packages/@uppy/audio/lib/Audio.js
+++ b/packages/@uppy/audio/lib/Audio.js
@@ -47,9 +47,7 @@ var _changeSource = _classPrivateFieldLooseKey("changeSource");
 var _updateSources = _classPrivateFieldLooseKey("updateSources");
 export default class Audio extends UIPlugin {
   constructor(uppy, opts) {
-    var _this;
     super(uppy, opts);
-    _this = this;
     Object.defineProperty(this, _getAudio, {
       value: _getAudio2,
     });
@@ -78,52 +76,47 @@ export default class Audio extends UIPlugin {
     });
     Object.defineProperty(this, _mediaDevices, {
       writable: true,
-      value: null,
+      value: void 0,
     });
     Object.defineProperty(this, _supportsUserMedia, {
       writable: true,
-      value: null,
+      value: void 0,
     });
     Object.defineProperty(this, _start, {
       writable: true,
-      value: function(options) {
-        if (options === void 0) {
-          options = null;
-        }
-        if (!_classPrivateFieldLooseBase(_this, _supportsUserMedia)[_supportsUserMedia]) {
+      value: options => {
+        if (!_classPrivateFieldLooseBase(this, _supportsUserMedia)[_supportsUserMedia]) {
           return Promise.reject(new Error("Microphone access not supported"));
         }
-        _classPrivateFieldLooseBase(_this, _audioActive)[_audioActive] = true;
-        _classPrivateFieldLooseBase(_this, _hasAudioCheck)[_hasAudioCheck]().then(hasAudio => {
-          _this.setPluginState({
+        _classPrivateFieldLooseBase(this, _audioActive)[_audioActive] = true;
+        _classPrivateFieldLooseBase(this, _hasAudioCheck)[_hasAudioCheck]().then(hasAudio => {
+          this.setPluginState({
             hasAudio,
           });
-          return _classPrivateFieldLooseBase(_this, _mediaDevices)[_mediaDevices].getUserMedia({
+          return _classPrivateFieldLooseBase(this, _mediaDevices)[_mediaDevices].getUserMedia({
             audio: true,
           }).then(stream => {
-            _classPrivateFieldLooseBase(_this, _stream)[_stream] = stream;
+            _classPrivateFieldLooseBase(this, _stream)[_stream] = stream;
             let currentDeviceId = null;
             const tracks = stream.getAudioTracks();
-            if (!options || !options.deviceId) {
+            if (!(options != null && options.deviceId)) {
               currentDeviceId = tracks[0].getSettings().deviceId;
             } else {
-              tracks.forEach(track => {
-                if (track.getSettings().deviceId === options.deviceId) {
-                  currentDeviceId = track.getSettings().deviceId;
-                }
+              currentDeviceId = tracks.findLast(track => {
+                return track.getSettings().deviceId === options.deviceId;
               });
             }
-            _classPrivateFieldLooseBase(_this, _updateSources)[_updateSources]();
-            _this.setPluginState({
+            _classPrivateFieldLooseBase(this, _updateSources)[_updateSources]();
+            this.setPluginState({
               currentDeviceId,
               audioReady: true,
             });
           }).catch(err => {
-            _this.setPluginState({
+            this.setPluginState({
               audioReady: false,
               cameraError: err,
             });
-            _this.uppy.info(err.message, "error");
+            this.uppy.info(err.message, "error");
           });
         });
       },
diff --git a/packages/@uppy/audio/lib/RecordingScreen.js b/packages/@uppy/audio/lib/RecordingScreen.js
index 71cbab3..024c9e1 100644
--- a/packages/@uppy/audio/lib/RecordingScreen.js
+++ b/packages/@uppy/audio/lib/RecordingScreen.js
@@ -23,7 +23,7 @@ export default function RecordingScreen(props) {
     recordingLengthSeconds,
   } = props;
   const canvasEl = useRef(null);
-  const oscilloscope = useRef(null);
+  const oscilloscope = useRef();
   useEffect(() => {
     return () => {
       oscilloscope.current = null;
diff --git a/packages/@uppy/audio/lib/audio-oscilloscope/index.js b/packages/@uppy/audio/lib/audio-oscilloscope/index.js
index 474fb30..11a8600 100644
--- a/packages/@uppy/audio/lib/audio-oscilloscope/index.js
+++ b/packages/@uppy/audio/lib/audio-oscilloscope/index.js
@@ -28,7 +28,6 @@ export default class AudioOscilloscope {
     const canvasContextOptions = options.canvasContext || {};
     this.analyser = null;
     this.bufferLength = 0;
-    this.dataArray = [];
     this.canvas = canvas;
     this.width = result(canvasOptions.width) || this.canvas.width;
     this.height = result(canvasOptions.height) || this.canvas.height;
diff --git a/packages/@uppy/audio/lib/formatSeconds.js b/packages/@uppy/audio/lib/formatSeconds.js
index 44b29d0..a3555f3 100644
--- a/packages/@uppy/audio/lib/formatSeconds.js
+++ b/packages/@uppy/audio/lib/formatSeconds.js
@@ -1,3 +1,3 @@
 export default function formatSeconds(seconds) {
-  return `${Math.floor(seconds / 60)}:${String(seconds % 60).padStart(2, 0)}`;
+  return `${Math.floor(seconds / 60)}:${String(seconds % 60).padStart(2, "0")}`;
 }

@aduh95
Copy link
Contributor Author

aduh95 commented Jan 17, 2024

Can we disable the Forbidden non-null assertion eslint rule? We clearly want to use it every now and then and I think we already know to be cautious about it.

I'm not opposed to it, I think we do want to get rid of those non-null assertions at some point (on the 4.x branch) though

@aduh95 aduh95 added the safe to test Add this label on trustworthy PRs to spawn the e2e test suite label Jan 17, 2024
@github-actions github-actions bot removed pending end-to-end tests safe to test Add this label on trustworthy PRs to spawn the e2e test suite labels Jan 17, 2024
@aduh95 aduh95 added the safe to test Add this label on trustworthy PRs to spawn the e2e test suite label Jan 17, 2024
@github-actions github-actions bot removed the safe to test Add this label on trustworthy PRs to spawn the e2e test suite label Jan 17, 2024
@mifi
Copy link
Contributor

mifi commented Jan 19, 2024

Can we disable the Forbidden non-null assertion eslint rule? We clearly want to use it every now and then and I think we already know to be cautious about it.

I thought we wanted to have it as a todo for typescript things that we need to fix in the future

@aduh95 aduh95 added the safe to test Add this label on trustworthy PRs to spawn the e2e test suite label Jan 22, 2024
@github-actions github-actions bot removed pending end-to-end tests safe to test Add this label on trustworthy PRs to spawn the e2e test suite labels Jan 22, 2024
@aduh95 aduh95 merged commit c56d412 into transloadit:main Jan 22, 2024
18 checks passed
@aduh95 aduh95 deleted the audio-ts branch January 22, 2024 14:04
@github-actions github-actions bot mentioned this pull request Feb 19, 2024
github-actions bot added a commit that referenced this pull request Feb 19, 2024
| Package                   | Version | Package                   | Version |
| ------------------------- | ------- | ------------------------- | ------- |
| @uppy/audio               |   1.1.5 | @uppy/remote-sources      |   1.1.1 |
| @uppy/aws-s3              |   3.6.1 | @uppy/status-bar          |   3.2.6 |
| @uppy/aws-s3-multipart    |  3.10.1 | @uppy/store-default       |   3.2.1 |
| @uppy/companion           |  4.12.1 | @uppy/store-redux         |   3.0.6 |
| @uppy/companion-client    |   3.7.1 | @uppy/svelte              |   3.1.2 |
| @uppy/compressor          |   1.1.0 | @uppy/thumbnail-generator |   3.0.7 |
| @uppy/core                |   3.9.0 | @uppy/transloadit         |   3.5.0 |
| @uppy/dashboard           |   3.7.2 | @uppy/tus                 |   3.5.1 |
| @uppy/drop-target         |   2.0.3 | @uppy/utils               |   5.7.1 |
| @uppy/form                |   3.1.0 | @uppy/vue                 |   1.1.1 |
| @uppy/golden-retriever    |   3.1.2 | @uppy/webcam              |   3.3.5 |
| @uppy/image-editor        |   2.4.1 | @uppy/xhr-upload          |   3.6.1 |
| @uppy/locales             |   3.5.1 | uppy                      |  3.22.0 |
| @uppy/provider-views      |   3.9.0 |                           |         |

-  @uppy/aws-s3-multipart,@uppy/aws-s3,@uppy/companion-client,@uppy/tus,@uppy/xhr-upload: update `uppyfile` objects before emitting events (antoine du hamel / #4928)
- @uppy/transloadit: add `clientname` option (marius / #4920)
- @uppy/thumbnail-generator: fix broken previews after cropping (evgenia karunus / #4926)
- @uppy/compressor: upgrade compressorjs (merlijn vos / #4924)
- @uppy/companion: fix companion dns and allow redirects from http->https again (mikael finstad / #4895)
- @uppy/dashboard: autoopenfileeditor - rename "edit file" to "edit image" (evgenia karunus / #4925)
- meta: resolve jsx to preact in shared tsconfig (merlijn vos / #4923)
- @uppy/image-editor: image editor: make compressor work after the image editor, too (evgenia karunus / #4918)
- meta: exclude `tsconfig` files from npm bundles (antoine du hamel / #4916)
- @uppy/compressor: migrate to ts (mikael finstad / #4907)
- @uppy/provider-views: update uppy-providerbrowser-viewtype--list.scss (aditya patadia / #4913)
- @uppy/tus: migrate to ts (merlijn vos / #4899)
- meta: bump yarn version (antoine du hamel / #4906)
- meta: validate `defaultoptions` for stricter option types (antoine du hamel / #4901)
- @uppy/dashboard: Uncouple native camera and video buttons from the `disableLocalFiles` option (jake mcallister / #4894)
- meta: put experimental ternaries in .prettierrc.js (merlijn vos / #4900)
- @uppy/xhr-upload: migrate to ts (merlijn vos / #4892)
- @uppy/drop-target: refactor to typescript (artur paikin / #4863)
- meta: fix missing line return in js2ts script (antoine du hamel)
- meta: disable `@typescript-eslint/no-empty-function` lint rule (antoine du hamel / #4891)
- @uppy/companion-client: fix tests and linter (antoine du hamel / #4890)
- @uppy/companion-client: migrate to ts (merlijn vos / #4864)
- meta: prettier 3.0.3 -> 3.2.4 (antoine du hamel / #4889)
- @uppy/image-editor: migrate to ts (merlijn vos / #4880)
- meta: fix race condition in `e2e.yml` (antoine du hamel)
- @uppy/core: add utility type to help define plugin option types (antoine du hamel / #4885)
- meta: merge `output-watcher` and `e2e` workflows (antoine du hamel / #4886)
- @uppy/status-bar: fix `statusbaroptions` type (antoine du hamel / #4883)
- @uppy/core: improve types of .use() (merlijn vos / #4882)
- @uppy/audio: fix `audiooptions` (antoine du hamel / #4884)
- meta: upgrade vite and vitest (antoine du hamel / #4881)
- meta: fix `yarn build:clean` (antoine du hamel)
- @uppy/audio: refactor to typescript (antoine du hamel / #4860)
- @uppy/status-bar: refactor to typescript (antoine du hamel / #4839)
- @uppy/core: add `plugintarget` type and mark options as optional (antoine du hamel / #4874)
- meta: improve output watcher diff (antoine du hamel / #4876)
- meta: minify the output watcher diff further (antoine du hamel)
- meta: remove comments from output watcher (mikael finstad / #4875)
- @uppy/utils: improve types for `finddomelement` (antoine du hamel / #4873)
- @uppy/code: allow plugins to type `pluginstate` (antoine du hamel / #4872)
- meta: build(deps): bump follow-redirects from 1.15.1 to 1.15.4 (dependabot[bot] / #4862)
- meta: add `output-watcher` gha to help check output diff (antoine du hamel / #4868)
- meta: generate locale pack from output file (antoine du hamel / #4867)
- meta: comment on what we want to do about close, resetprogress, clearuploadedfiles, etc in the next major (artur paikin / #4865)
- meta: fix `yarn build:clean` (antoine du hamel / #4866)
- meta: use `explicit-module-boundary-types` lint rule (antoine du hamel / #4858)
- @uppy/form: use requestsubmit (merlijn vos / #4852)
- @uppy/provider-views: add referrerpolicy to images (merlijn vos / #4853)
- @uppy/core: add `debuglogger` as export in manual types (antoine du hamel / #4831)
- meta: fix `js2ts` script (antoine du hamel / #4846)
- @uppy/xhr-upload: show remove button (merlijn vos / #4851)
- meta: upgrade `@transloadit/prettier-bytes` (antoine du hamel / #4850)
- @uppy/core: add missing requiredmetafields key in restrictions (darthf1 / #4819)
- @uppy/companion,@uppy/tus: bump `tus-js-client` version range (merlijn vos / #4848)
- meta: build(deps): bump aws/aws-sdk-php from 3.272.1 to 3.288.1 in /examples/aws-php (dependabot[bot] / #4838)
- @uppy/dashboard: fix `typeerror` when `file.remote` is nullish (antoine du hamel / #4825)
- meta: fix `js2ts` script (antoine du hamel / #4844)
- @uppy/locales: fix "save" button translation in hr_hr.ts (žan žlender / #4830)
- meta: fix linting of `.tsx` files (antoine du hamel / #4843)
- @uppy/core: fix types (antoine du hamel / #4842)
- @uppy/utils: improve `preprocess` and `postprocess` types (antoine du hamel / #4841)
- meta: fix `yarn build:clean` (mikael finstad / #4840)
- meta: dev: remove extensions from vite aliases (antoine du hamel)
- meta: fix `"e2e"` script (antoine du hamel)
- @uppy/core: refactor to ts (murderlon)
- meta: fix typescript ci (antoine du hamel)
- meta: fix clean script (mikael finstad / #4820)
- @uppy/companion-client: fix `typeerror` (antoine du hamel)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants